# 类型注解

# 方式1
var_1:int=12
var_2:float=12.3
var_3:str="sfds"
var_4:bool=False

class Student:
    pass
stu:Student=Student()

my_list1:list=[1,2,3]
my_tuple1:tuple=(1,2,3)
my_set1:set={1,2,3}
my_dict1:dict={"x":1,"y":2}

# []内的内容，类似泛型
my_list2:list[int]=[1,2,3]
# 元组必须指定每一个元素的类型
my_tuple2:tuple[int,int,int]=(1,2,3)
my_set2:set[int]={1,2,3}
# 字典类型需要两个类型，一个key，一个value
my_dict2:dict[str,int]={"x":1,"y":2}

# 方式2
var_5=12 # type:int
var_6={"haha":123} # type:[str,int]
var_7=Student() # type:Student

# 函数注解
def func(x:float,y:float)->float:
    import math
    return math.sqrt(x**2+y**2)

print(func(3,4))

# Union类型
from typing import Union
my_dict:[str,Union[str,int]]={"name":"张三","age":23}